package io.mft.datasource.ar;

import cn.hutool.core.bean.BeanUtil;
import io.mft.as.ar.gateway.AR;
import io.mft.as.ar.gateway.config.BusConfig;
import io.mft.as.ar.gateway.config.BusIdConfig;
import io.mft.as.ar.gateway.config.bean.ARConfig;
import io.mft.as.ar.gateway.config.bean.ARServiceConfig;
import io.mft.commons.config.datasource.DSConfigSource;
import io.mft.commons.function.response.kv.KVMap;
import io.mft.datasource.ar.config.ARDSConfigService;
import io.mft.dev.base.MFTRuntimeConfig;
import lombok.extern.slf4j.Slf4j;
/**
 * 基础功能插件程序入口
 * @说明：TODO
 * @类型名称：ARPluginApplication
 * @创建者: 胡常建  
 * @创建时间: 2021年2月18日 上午9:45:52
 * @修改者: 胡常建  
 * @修改时间: 2021年2月18日 上午9:45:52
 */
@Slf4j
public class ARBootstrap{

	 private static void initAR(DSConfigSource dsConfigSource) {
		if (!"ar".equals(dsConfigSource.getType())) {
			return;
		}
		dsConfigSource.getDatasources().forEach(da->{
			KVMap map=new KVMap();
			da.getConfig().entrySet().forEach(entry->{
				map.put("ar_"+entry.getKey().toLowerCase(), entry.getValue());
			});
			ARConfig arConfig=BeanUtil.toBean(map, ARConfig.class);
					//BeanUtil.mapToBean(map, ARConfig.class, false);
			boolean s=BusConfig.addConfig(arConfig);
			if (s) {
				log.warn("注册ar数据源:{}",da.getId());
			}
		});
		if (dsConfigSource.getServices()!=null) {
			dsConfigSource.getServices().forEach(kv->{
				ARDSConfigService service=BeanUtil.toBean(kv, ARDSConfigService.class);
				ARServiceConfig arServiceConfig=new ARServiceConfig();
				arServiceConfig.setBusconfigid(service.getBusConfigId());
				arServiceConfig.setSystemid(service.getSystemID());
				arServiceConfig.setSystemno(service.getSystemNo());
				boolean s=BusIdConfig.addConfig(arServiceConfig);
				if (s) {
					log.warn("注册ar系统服务:{}-{}-{}",service.getBusConfigId(),service.getSystemID(),service.getSystemNo());
				}
				
			});
		}
		AR.start();
	}
	public static void init(MFTRuntimeConfig config) {
		config.getDsConfig().values().forEach(dsConfigSource->{
			initAR(dsConfigSource);
		});
	}
}
